﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using System.IO;
using produccion.vistamodelo;
using System.ComponentModel;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMMatMatp.xaml
    /// </summary>
    public partial class FRMMatMatp : Window
    {
        MatMatp _MatMatp;

        public FRMMatMatp()
        {
            InitializeComponent();
            _MatMatp = (MatMatp)this.DataContext;
            limpiar();
        }

        private void limpiar()
        {
            texCod.Text = "";
            texNom.Text = "";
            comGru.SelectedValue = "";
            comSub.SelectedValue = "";
            comUnc.SelectedValue = "";
            comUnu.SelectedValue = "";
            texPosb.Text = "";
            radAct.IsChecked = true;
            _MatMatp.material.CAMBIO = false;
        }

        private void comGru_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            _MatMatp.cargarSubgrupos();
        }

        string cam;
        private void ColCamb(object sender, TextChangedEventArgs e)
        {
            if (cam != ((TextBox)sender).Text)
            {
                cam = ((TextBox)sender).Text;
                clases.CLSMAECOLP color = new clases.CLSMAECOLP { CODCOL_COL = ((TextBox)sender).Text };
                color.consultar();
                clases.CLSMAEMTP mat = (clases.CLSMAEMTP)dtMatp.SelectedItem;
                mat.NOMCOLOR = color.NOMCOL_COL;
                if (((TextBox)sender).Text.Length == 4)
                {
                    if (!color.EXISTE)
                    {
                        buscCol(color.CODCOL_COL);
                    }
                }
            }
       }

        private void buscCol(object sender, RoutedEventArgs e)
        {  
            buscCol("");
        }

        private void buscCol(string descripccion)
        {
            FRMbuscar f = new FRMbuscar(new clases.CLSMAECOLP(), "buscar", "Nombre_color", "NOMCOL_COL", "Codigo_color",descripccion);
            f.ShowDialog();
            clases.CLSMAEMTP mat = (clases.CLSMAEMTP)dtMatp.SelectedItem;
            if (mat.EXISTE == false)
            {
                if (mat.CODCOL_MTP == f.retorno)
                {
                    mat.CODCOL_MTP = "";
                }
                if (f.retorno != "")
                {
                    mat.CODCOL_MTP = f.retorno;
                }
            }
        }

        string cam2;
        private void ProvCamb(object sender, TextChangedEventArgs e)
        {
            if (cam2 != ((TextBox)sender).Text)
            {
                cam2 = ((TextBox)sender).Text;

                clases.CLSMAEPRVP prov = new clases.CLSMAEPRVP { CODPRV_PRV = ((TextBox)sender).Text };
                prov.consultar();
                clases.CLSPRVMAT pr = (clases.CLSPRVMAT)dtProv.SelectedItem;
                pr.NOMPRV = prov.NOMPRV_PRV;

                if (((TextBox)sender).Text.Length == 3)
                {
                    if (!prov.EXISTE)
                    {
                        buscPrv(prov.CODPRV_PRV);
                    }
                }
            }
           // ((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
        }

        private void buscPrv(object sender, RoutedEventArgs e)
        {
           buscPrv("");
        }

        private void buscPrv(string descripccion)
        {
            FRMbuscar f = new FRMbuscar(new clases.CLSMAEPRVP(), "buscar", "Nombre", "NOMPRV_PRV", "Codigo",descripccion);
            clases.CLSPRVMAT pr = (clases.CLSPRVMAT)dtProv.SelectedItem;
            f.ShowDialog();
            if (!pr.EXISTE)
            {
                if (pr.CODPRV_PXM == f.retorno)
                {
                    pr.CODPRV_PXM = "";
                }
                if (f.retorno != "")
                {
                    pr.CODPRV_PXM = f.retorno;
                }
            }
        }
        
        string camb;
        private void texCod_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (_MatMatp.material.CODMAT_MAT != camb)
            {
                if (_MatMatp.material.CAMBIO)
                {
                    if (MessageBox.Show("¿Está seguro que desea cambiar de elemento? se perderán los cambios no guardados.", "Confirmar", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.Cancel)//RRR
                    {
                        _MatMatp.material.CODMAT_MAT = camb;
                        return;
                    }
                    _MatMatp.material.CAMBIO = false;
                }
                camb = _MatMatp.material.CODMAT_MAT;
                _MatMatp.consultar();
                llenarImagen();
                if (!_MatMatp.material.EXISTE)
                {
                    texNom.Text = "";
                    comGru.SelectedValue = "";
                    comSub.SelectedValue = "";
                    comUnc.SelectedValue = "";
                    comUnu.SelectedValue = "";
                    texPosb.Text = "";
                    radAct.IsChecked = true;
                    _MatMatp.material.CAMBIO = false;
                }
                else
                {
                    _MatMatp.ERRORM = false;
                    _MatMatp.ERRORP = false;
                }
            }
        }

        private void llenarImagen()
        {
            string Rimagen = rutaImg();
            if (!Rimagen.Equals(""))
            {
                BitmapImage b = new BitmapImage();
                b.BeginInit();
                b.UriSource = new Uri(Rimagen);
                b.EndInit();
                imaMat.Stretch = Stretch.Fill;
                imaMat.Source = b;
            }
            else
            {
                imaMat.Source = null;
            }
        }

        private string rutaImg()
        {
            if (File.Exists(MDOgeneral.Fotos_BOSI + texCod.Text + ".jpg"))
            {
                return MDOgeneral.Fotos_BOSI + texCod.Text + ".jpg";
            }
            return "";
        }

        private void butSal_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void butNue_Click(object sender, RoutedEventArgs e)
        {

        }

        private void butGua_Click(object sender, RoutedEventArgs e)
        {
            _MatMatp.guardar(wPnot);
            texCod.Focus();
            texCod.Select(0, 0);
        }


        private void butEli_Click(object sender, RoutedEventArgs e)
        {
            _MatMatp.eliminar(wPnot);
            texCod.Focus();
            texCod.Select(0, 0);
        }

        private void butCreaColor_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FRMmancolo col = new FRMmancolo();
                col.ShowDialog();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dtMatp_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            _MatMatp.material.CAMBIO = true;
        }

        private void dtProv_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            _MatMatp.material.CAMBIO = true;
        }

        private void dtProv_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_MatMatp.proveedor != null)
            {
                _MatMatp.proveedor.CODMAT_PXM = _MatMatp.material.CODMAT_MAT;
            }
            else
            {
                _MatMatp.proveedor = new clases.CLSPRVMAT { CODMAT_PXM = MatMatp.material.CODMAT_MAT };
            }
        }

        private void dtMatp_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_MatMatp.Materiap!= null)
            {
                _MatMatp.Materiap.CODMAT_MTP = _MatMatp.material.CODMAT_MAT;
            }
            else
            {
                _MatMatp.Materiap = new clases.CLSMAEMTP { CODMAT_MTP= _MatMatp.material.CODMAT_MAT };
            }
        }

        private void buscMat(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol f = new FRMBuscarCol();
            f.EsReferencia = false;
            f.RequiereColor = false;
            f.Retorno = "";
            f.ShowDialog();
            if (!f.Retorno.Equals(""))
            {
                texCod.Text = f.Retorno;
                return;
            }
            if (texCod.Text == f.Retorno)
            {
                texCod_TextChanged(null, null);
            }
        }

        private void ValidarMatp(object sender, ValidationErrorEventArgs e)
        {
            _MatMatp.ERRORM = false;
        }
        
        private void ValidarProvee(object sender, ValidationErrorEventArgs e)
        {
            MatMatp.ERRORP = false;
        }

        private void dtMatp_LostFocus(object sender, RoutedEventArgs e)
        {
            Boolean errors = (from c in
                                  (from object i in dtMatp.ItemsSource
                                   select dtMatp.ItemContainerGenerator.ContainerFromItem(i))
                              where c != null
                              select Validation.GetHasError(c)).FirstOrDefault(x => x);
            _MatMatp.ERRORM = errors;
        }

        private void dtProv_LostFocus(object sender, RoutedEventArgs e)
        {
            Boolean errors = (from c in
                                  (from object i in dtProv.ItemsSource
                                   select dtProv.ItemContainerGenerator.ContainerFromItem(i))
                              where c != null select Validation.GetHasError(c)).FirstOrDefault(x => x);

            _MatMatp.ERRORP= errors;
        }

        private void texColor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.F2) 
            { 
                buscCol(null, null);
            }
        }

        private void texProv_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.F2)
            {
                buscPrv(null, null);
            }
        }

        private void butCrear_Click(object sender, RoutedEventArgs e)
        {
            FRMcrearMaterial crear = new FRMcrearMaterial();
            crear.ShowDialog();

            if (texCod.Text == crear.retorno)
            {
                texCod_TextChanged(null, null);
            }
            if (crear.retorno != "")
            {
                texCod.Text = crear.retorno;
                _MatMatp.material.CODGRP_MAT = crear.retorno.Substring(0, 1);
                _MatMatp.material.CODSUB_MAT = crear.retorno.Substring(1, 2);
            }
            texCod.Focus();
            texCod.Select(0, 0);
        }

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (_MatMatp.material.CAMBIO)
            {
                if (MessageBox.Show("¿Está seguro que desea salir? se perderán los cambios no guardados.", "Confirmar", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.Cancel)
                {
                    e.Cancel = true;
                }
                else
                {
                    _MatMatp.material.CAMBIO = false;
                }
            }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(texCod);
        }

        private void dtMatp_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void dtProv_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        //
        // SINGLE CLICK EDITING
        //
        private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DataGridCell cell = sender as DataGridCell;
            if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
            {
                if (!cell.IsFocused)
                {
                    cell.Focus();
                }
                DataGrid dataGrid = FindVisualParent<DataGrid>(cell);
                if (dataGrid != null)
                {
                    if (dataGrid.SelectionUnit != DataGridSelectionUnit.FullRow)
                    {
                        if (!cell.IsSelected)
                            cell.IsSelected = true;
                    }
                    else
                    {
                        DataGridRow row = FindVisualParent<DataGridRow>(cell);
                        if (row != null && !row.IsSelected)
                        {
                            row.IsSelected = true;
                        }
                    }
                }
            }
        }

        static T FindVisualParent<T>(UIElement element) where T : UIElement
        {
            UIElement parent = element;
            while (parent != null)
            {
                T correctlyTyped = parent as T;
                if (correctlyTyped != null)
                {
                    return correctlyTyped;
                }

                parent = VisualTreeHelper.GetParent(parent) as UIElement;
            }
            return null;
        }

        private void Window_KeyUp(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;

        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        } 

    }
    internal class MatMatp:ObservableObject
    {

        #region propiedades

        //-------------------------------------------------------------------------
        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; RaisePropertyChangedEvent("strTituloVentana"); }
        }

        private VMbuscarGeneral _buscarMateriaPrima;
        public VMbuscarGeneral buscarMateriaPrima
        {
            get { return _buscarMateriaPrima; }
            set { _buscarMateriaPrima = value; RaisePropertyChangedEvent("buscarMateriaPrima"); }
        }

        //Materia prima
        List<clases.CLSMAEMTP> _LisMateriap = new List<clases.CLSMAEMTP>();
        public List<clases.CLSMAEMTP> LisMateriap
        {
            get { return _LisMateriap; }
            set { _LisMateriap = value; RaisePropertyChangedEvent("LisMateriap"); }
        }

        clases.CLSMAEMTP _Materiap;
        public clases.CLSMAEMTP Materiap
        {
            get { return _Materiap; }
            set { _Materiap = value; RaisePropertyChangedEvent("Materiap");  }
        }

        //Proveedores
        List<clases.CLSPRVMAT> _LisProveedor = new List<clases.CLSPRVMAT>();
        public List<clases.CLSPRVMAT> LisProveedor
        {
            get { return _LisProveedor; }
            set { _LisProveedor = value; RaisePropertyChangedEvent("LisProveedor"); }
        }
        
        clases.CLSPRVMAT _proveedor = new clases.CLSPRVMAT();
        public clases.CLSPRVMAT proveedor
        {
            get { return _proveedor; }
            set { _proveedor = value; RaisePropertyChangedEvent("proveedor"); }
        }

        //Existen errores en el DataGrid de materias primas
        Boolean _ERRORM = true;
        public Boolean ERRORM
        {
            get { return _ERRORM; }
            set {  _ERRORM = value; RaisePropertyChangedEvent("ERRORM"); }
        }

        //Existenten errores en el Datagrid de proveedores
        Boolean _ERRORP = true;
        public Boolean ERRORP
        {
            get { return _ERRORP; }
            set { _ERRORP = value; RaisePropertyChangedEvent("ERRORP");  }                   
        }

        //Material
        clases.CLSMAEMAT _material = new clases.CLSMAEMAT();
        public clases.CLSMAEMAT material
        {
            get { return _material; }
            set { _material = value; RaisePropertyChangedEvent("material"); }
        }

        //Enlazado de combox
        List<clases.CLSMAEGRP> _grupos = new clases.CLSMAEGRP().listaGrupos();
        public List<clases.CLSMAEGRP> grupos
        {
            get { return _grupos; }
            set {  _grupos=value; RaisePropertyChangedEvent("grupos"); }
        }
        
        List<clases.CLSMAESUB> _subgrupos = new List<clases.CLSMAESUB>();
        public List<clases.CLSMAESUB> subgrupos 
        {
            get { return _subgrupos; }
            set { _subgrupos = value; RaisePropertyChangedEvent("subgrupos"); }
        }
        
        DataTable _unidades = new clases.CLSENCUNI().ConsultarTodas();
        public DataTable unidades
        {
            get { return _unidades; }
            set { _unidades = value; RaisePropertyChangedEvent("unidades"); }
        }
 
        #endregion

        //-----------------------------------------------------------------------
        public MatMatp()
        {
            cargarMateriasPrimas();

            MDOgeneral.conectar();
            strTituloVentana = "Materiales y materias primas - Usuario: " + MDOgeneral.usuario + " - [FRMMatMatp]";
        }

        void cargarMateriasPrimas()
        {
            try
            {
                List<clases.CLSMAEMAT> lismateriasprimas = new clases.CLSMAEMAT().LisMateriales();
                _buscarMateriaPrima = new VMbuscarGeneral((from mat in lismateriasprimas select new 
                    VMlistaGenerica { strColumna1 = mat.CODMAT_MAT, strColumna2 = mat.NOMMAT_MAT, strColumna3 = mat.CODGRP_MAT, strColumna4 = mat.CODSUB_MAT }).ToList());
                buscarMateriaPrima.PropertyChanged += onBuscarMateriaPrimaPropertychanged;
                buscarMateriaPrima.gridBuscar.columna1.strNombre = "Código";
                buscarMateriaPrima.gridBuscar.columna2.strNombre = "Nombre Materia Prima";
                buscarMateriaPrima.gridBuscar.columna3.strNombre = "Grupo";
                buscarMateriaPrima.gridBuscar.columna4.strNombre = "Subgrupo";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void onBuscarMateriaPrimaPropertychanged(object sender, PropertyChangedEventArgs e)
        {
            try
            {
                if (e.PropertyName == "IsOpen")
                {
                    if (!buscarMateriaPrima.IsOpen)
                    {
                        if (buscarMateriaPrima.gridBuscar.selLista != null)
                        {
                            material.CODMAT_MAT = buscarMateriaPrima.gridBuscar.selLista.strColumna1;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        RelayCommand _cmdBuscarMateriaPrima;
        public ICommand cmdBuscarMateriaPrima
        {
            get
            {
                if (_cmdBuscarMateriaPrima == null)
                {
                    _cmdBuscarMateriaPrima = new RelayCommand(r => buscar_MateriaPrima());
                }
                return _cmdBuscarMateriaPrima;
            }
        }

        RelayCommand _cmdExistencias;
        public ICommand cmdExistencias
        {
            get
            {
                if (_cmdExistencias == null)
                {
                    _cmdExistencias = new RelayCommand(r =>llamar_existencias());
                }
                return _cmdExistencias;
            }
        }

        private void llamar_existencias()
        {
            try
            {
                FRMConsultaExistencias cons = new FRMConsultaExistencias();
                cons.ShowDialog();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void buscar_MateriaPrima()
        {
            try
            {
                buscarMateriaPrima.IsOpen = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void consultar() 
        {
            material.ConsMat();
            if (material.EXISTE)
            {
                LisMateriap = new clases.CLSMAEMTP {CODMAT_MTP=material.CODMAT_MAT}.ListarMatPri(); 
                LisProveedor = new clases.CLSPRVMAT{CODMAT_PXM =material.CODMAT_MAT}.ListarMatPro();
            }
            else 
            {
                LisMateriap = new List<clases.CLSMAEMTP>();
                LisProveedor = new List<clases.CLSPRVMAT>();
            }   
        }

        public void eliminar(WrapPanel wPnot)
        {
            try 
            {
                if (material.eliminar() >0) 
                {
                    new MDOgeneral.notificar(wPnot, "El elemento fue eliminado correctamente", true);
                    material = new clases.CLSMAEMAT();
                    consultar();
                }
                else
                {
                    LisMateriap.RemoveAll(x => x.ELIMINAR.Equals(true));
                    RaisePropertyChangedEvent("LisMateriap");
                    consultar();
                    new MDOgeneral.notificar(wPnot, "Solo fueron eliminados loe elementos seleccionaos", false);
                }

            }catch(Exception ex){MessageBox.Show(ex.Message);}
        
        }

        public void guardar(WrapPanel wPnot)
        {
            String StrRespuesta = PttStr_SePuedeSeguir(LisProveedor, LisMateriap);//FJRF - Capturamos la respuesta que nos da el sistema
           try
            {
                if (StrRespuesta == "SI")//FJRF - Validamos si se puede grabar y si la respuesta es afirmativa hacemos lo siguiente
                {
                    if (material.guardarMaterial(material, LisProveedor, LisMateriap))
                    {
                        new MDOgeneral.notificar(wPnot, "Los cambios fueron guardados correctamente.", true);
                        consultar();
                    }
                    else
                    {
                        new MDOgeneral.notificar(wPnot, "Los cambios no pueden ser almacenados.", false);
                    }
                }
                else//FJRF - Si el sistema informa que no puede seguir hacemos lo siguiente
                {
                    Msgbox("PROCESO CANCELADO", StrRespuesta, MessageBoxButton.OK, MessageBoxImage.Stop);//FJRF - Enviamos un mensaje al usuario
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }

        }

        protected String PttStr_SePuedeSeguir(List<produccion.clases.CLSPRVMAT> LisProveedor, List<produccion.clases.CLSMAEMTP> LisMateriap)
        {
            String StrRetornar = "SI";//FJRF - Creamos la variable

            int IntCantidadRegistrosEnLaLista = 0, IntCantidadDatosDeLaLista = 0;//FJRF - Variables que manejaran el conteo de datos de las listas

            #region FJRF - ValidamosQueLasListasDeProveedoresContenganDatos
            IntCantidadDatosDeLaLista = LisProveedor.Count;//FJRF - Preguntamos la cantidad de datos que tiene la lista
            if (IntCantidadDatosDeLaLista <= 0)//FJRF - Si la cantidad de datos que contiene la lista es menor o igual a cero hacemos lo siguiente
            {
                StrRetornar = "No existen proveedores, por favor asigne un proveedor en el grid proveedores asociados para poder guardar el nuevo registro";//FJRF - Le retornamos un mensaje al usuario
            }
            else//FJRF - Si la lista contiene datos hacemos lo siguiente
            {
                for (int i = 0; i <= LisProveedor.Count - 1; i++)//FJRF - Recorremos la lista
                {
                    if (LisProveedor[i].CODPRV_PXM != null && LisProveedor[i].CODPRV_PXM.Trim() !="")//FJRF - Comprovamos que el datos no sea nulo, no este vacio
                    {
                        IntCantidadRegistrosEnLaLista++;//FJRF - Si la sentencia anterior es correcta contamos un registro
                    }
                }
                if (IntCantidadRegistrosEnLaLista <= 0)//FJRF - Si la cantidad de registros es menor o igual a cero hacemos lo siguiente
                {
                    StrRetornar = "No existen proveedores, por favor asigne un proveedor en el grid proveedores asociados para poder guardar el nuevo registro";//FJRF - Le retornamos un mensaje al usuario
                }
            }
            #endregion

            #region FJRF - ValidamosQueLasListasDeMaterialesContenganDatos
            IntCantidadRegistrosEnLaLista = 0;//FJRF - Limpiamos la variable

            IntCantidadDatosDeLaLista = LisMateriap.Count;//FJRF - Preguntamos la cantidad de datos que tiene la lista
            if (IntCantidadDatosDeLaLista <= 0)//FJRF - Si la cantidad de datos que contiene la lista es menor o igual a cero hacemos lo siguiente
            {
                StrRetornar = "No existen materiales, por favor asigne un material en el grid proveedores asociados para poder guardar el nuevo registro";//FJRF - Le retornamos un mensaje al usuario
            }
            else//FJRF - Si la lista contiene datos hacemos lo siguiente
            {
                for (int i = 0; i <= LisMateriap.Count - 1; i++)//FJRF - Recorremos la lista
                {
                    if (LisMateriap[i].CODCOL_MTP != null && LisMateriap[i].CODCOL_MTP.Trim() != "")//FJRF - Comprovamos que el datos no sea nulo, no este vacio
                    {
                        IntCantidadRegistrosEnLaLista++;//FJRF - Si la sentencia anterior es correcta contamos un registro
                    }
                }
                if (IntCantidadRegistrosEnLaLista <= 0)//FJRF - Si la cantidad de registros es menor o igual a cero hacemos lo siguiente
                {
                    StrRetornar = "No existen materiales, por favor asigne un material en el grid proveedores asociados para poder guardar el nuevo registro";//FJRF - Le retornamos un mensaje al usuario
                }
            }
            #endregion

            return StrRetornar;//FJRF - Retornamos la autorización de grabar o el error para detener el proceso
        }
        public void cargarSubgrupos()
        {
            subgrupos = new clases.CLSMAESUB { CODGRP_SUB = material.CODGRP_MAT }.listaSubg();
        }

        #region FJRF - CajaDeTextoMsgbox
        protected void Msgbox(String StrCaption, String StrMensaje, MessageBoxButton MsbTipoBoton, MessageBoxImage MsbTipoImagenIcono)
        {
            MessageBoxButton buttons;
            buttons = MsbTipoBoton;

            MessageBoxImage icon = MsbTipoImagenIcono;
            MessageBox.Show(StrMensaje, StrCaption, buttons, icon);
        }
        #endregion

    }
}
